<?php

App::uses('File', 'Utility');
App::import('Vendor', 'php-excel-reader/excel_reader2');
App::import('Vendor', 'PHPExcel/Classes/PHPExcel');
class ConfiguracionModulosController extends AppController 
{
	public $uses = array('ConfiguracionModulos','Persona','Familiare','EstudioUniversidad','Universidad','Estudio',
							'FamiliarPersona','Poliza','Parentesco','Hospital','Seguro','Ocio','Sede','ReciboPago','TipoRecibo');	
	
	#---------------------------------------------------#  
	#------------Funciones Principales------------------#
	#---------------------------------------------------#
	public function index()
	{
		$this->layout = 'default_ini';	
	}
	public function add_modulo()
	{
		$this->layout = 'default_ini';	
		$this->llenar_combobox_modulos();
		if ($this->request->is('post') || $this->request->is('put'))
		{
			if($this->ConfiguracionModulo->save($this->request->data))
			{
				$this->setMessageFlash(1, "Se agrego el modulo", null);
			}
			else 
			{
				$this->setMessageFlash(2, 'No se pudo grabar', null);
			}
		}
		
	}
	
	public function consult_modulo($id_sede,$nombre_modulo)
	{
		$this->layout = 'default_ini';	
		$this->llenar_combobox_modulos();
		if ($this->request->is('post') || $this->request->is('put'))
		{
			if($this->ConfiguracionModulo->save($this->request->data))
			{
				$this->setMessageFlash(1, 'Se pudo grabar', null);
			}
			else 
			{
				$this->setMessageFlash(2, 'No se pudo grabar', null);
				
			}
		}
		
	}
	
	public function excel_configuracion()
	{
		$this->layout = 'default_ini';	
		if ($this->request->data == null)
		{
			$this->set("valor",1);
		}
		$this->combobox_excel_opciones();
		if($this->request->is('post') || $this->request->is('put'))
		{
			$this->set("valor",2);
			$direccion_archivo = WWW_ROOT.'/files/configuracion_modulo/'. 
 				$this->data['ConfiguracionModulo']['direcciones_pasos_beneficio']['name'];
			$this->leer_excel_para_tablas($this->request->data['ConfiguracionModulo']['tipo_opcion'], $direccion_archivo);			
			
		}
	}
	
	
	
	
	#---------------------------------------------------#
	#---------------Funciones Secundarias---------------#
	#---------------------------------------------------#
	private function setMessageFlash($id,$mensaje,$nombre_mensaje)
	{
		if (is_null($nombre_mensaje))
		{
			$nombre_mensaje = 'flash';
		}
		switch ($id) 
		{
			case 1: // mensaje bueno
				$this->Sessions->setFlash($mensaje,'default',array('class'=>'success'),$nombre_mensaje);
				break;
			case 2: // mensaje malo
				$this->Sessions->setFlash($mensaje,'default',array('class'=>'error-message'),$nombre_mensaje);
				break;
			case 3: // mensaje cuidado
				$this->Sessions->setFlash($mensaje,'default',array('class'=>'notice'),$nombre_mensaje);
				
				break;
			
			default:
				
				break;
		}
	}
	private function infoConsultModulo($nombre_modulo)
	{
		$strqry = 'SELECT *
					FROM configuracion_modulos CM, 
					configuracion_sistemas CS
					WHERE CS.id = CM.configuracion_sistema_id';
		
		if ($nombre_modulo != "*")
		{
			$strqry = $strqry.' AND CS.NOMBRE_CONFIGURACION LIKE "%'.$nombre_modulo.'%"';
		}
		$strqry = $strqry.' ORDER BY CS.ID ASC';
		$configuracion = $this->Articulo->query($strqry);
		$this->set('configuracion',$configuracion);
	}
	

	public function llenar_combobox_modulos($id)
	{
		
		$modulos = $this->ModulosSistemas->find('all');
		
		$arreglo = array();
		
		if ($id == 1)
		{
			array_push($arreglo, array(0 => 'Todos'));
		}
		elseif ($id == 2) 
		{
			array_push($arreglo, array(0 => 'Seleccione Una Opcion'));
		}
		foreach ($modulos as $modulo) 
		{
				array_push($arreglo, array($modulo['ModuloSistema']['id'] => $modulo['ModuloSistema']['nombre_modulos_sistema']));
		}
	
		$this->set('modulos',$arreglo);
	}
	
	
	public function guardar_archivos($identificador,$arreglo)
	{
		
		$malas = array();
		$i = 0;
		switch ($identificador) 
		{
			case 0:
				
					foreach ($arreglo as $persona) 
					{
						$i++;
						try
						{
							$persona_find = $this->Persona->findByCiPersona($persona['Persona']['ci_persona']);
							if ($persona_find)
							{
								$persona['Persona']['id'] =$persona_find['Persona']['id'];
							}	
							if ($this->Persona->save($persona))
							{
								
							}
							else 
							{
								array_push($malas, array(
															'Columna' => $i+9,
															'Mensaje' => 'No se pudo guardar el empleado, verifique los datos suministrados'
														)
										  );
							}
						}
						catch(Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'error general '.$ee
										     		)
									  );
						}
						
					}	
					
				break;
				
			case 1:
				
					foreach ($arreglo as $familiar) 
					{
						$i++;
						try
						{
							$familiar_find = $this->Familiare->findByCiFamiliar($familiar['Familiare']['ci_familiar']);
						
							if ($familiar_find)
							{
								$familiar['Familiare']['id'] =$familiar_find['Familiare']['id'];
							}
								
							if ($this->Familiare->save($familiar))
							{
								
							}
							else 
							{
								array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'No se pudo guardar el familiar, verifique los datos suministrados'
										     		)
									  );
							}
						}
						catch(Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'error general '.$ee
										     		)
									  );
						}
						
					}
				
				break;
				
			case 2:
					
					foreach ($arreglo as $familiar_assign) 
					{
						$i++;
						try
						{
									
							$familiar_find = $this->Familiare->findByCiFamiliar($familiar_assign['FamiliarPersona']['ci_familiar']);
							if ($familiar_find)
							{
								$familiar_assign['FamiliarPersona']['familiares_id'] = $familiar_find['Familiare']['id'];
								
								$empleado_find = $this->Persona->findByCiPersona($familiar_assign['FamiliarPersona']['ci_empleado']);
								
								if ($empleado_find)
								{
									$familiar_assign['FamiliarPersona']['persona_id'] = $empleado_find['Persona']['id'];
									
									$empleado_familiar_assign = $this->FamiliarPersona->findByPersonaIdAndFamiliaresId($empleado_find['Persona']['id'],$familiar_find['Familiare']['id']);
									
									if ($empleado_familiar_assign)
									{
										$familiar_assign['FamiliarPersona']['id'] = $empleado_familiar_assign['FamiliarPersona']['id'];
									}
									
									$parentesco_find = $this->Parentesco->findByNombreParentesco($familiar_assign['FamiliarPersona']['nombre_parentesco']);
									$familiar_assign['FamiliarPersona']['parentesco_id'] = $parentesco_find['Parentesco']['id'];
									
									if ($this->FamiliarPersona->save($familiar_assign))
									{
										
									}
									else 
									{
										array_push($malas,array(
																'Columna' => $i+9,
																'Mensaje' => 'No se pudo asignar el familiar, verifique los datos suministrados'
											     		)
										  );
									}
								}
								else 
								{
									array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'Mensaje la empleado insertada no se encuentra en la bd'
										     		)
									  );
								}
								

								
							}
							else
							{
								array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'Mensaje el familiar suministrado no se encuentra en la base de datos'
										     		)
									  );
							}
							
						}
						catch(Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'Mensaje 6'
										     		)
									  );
						}
						
					}
				
				
				break;
				
			case 3:
				
					foreach ($arreglo as $familiar_seguro) 
					{
						$i++;
						try
						{
									
							$familiar_find = $this->Familiare->findByCiFamiliar($familiar_seguro['FamiliarPersona']['ci_familiar']);
							if ($familiar_find)
							{
								
								$familiar_asign_find = $this->FamiliarPersona->query(
																					'SELECT * 
																						FROM FAMILIARES F, FAMILIAR_PERSONAS FP
																						WHERE F.ID = FP.FAMILIARES_ID
																						AND F.CI_FAMILIAR = "'.$familiar_seguro['FamiliarPersona']['ci_familiar'].'"'
																				);
													
								if ($familiar_asign_find)
								{
									
									$familiar_seguro['FamiliarPersona']['familiares_id'] = $familiar_asign_find[0]['F']['id'];
									$familiar_seguro['FamiliarPersona']['id'] = $familiar_asign_find[0]['FP']['id'];
									$familiar_seguro['FamiliarPersona']['parentesco_id'] = $familiar_asign_find[0]['FP']['parentesco_id'];
									$empleado_find = $this->Persona->findByCiPersona($familiar_seguro['FamiliarPersona']['ci_empleado']);
									
									if ($empleado_find)
									{
										$familiar_seguro['FamiliarPersona']['persona_id'] = $empleado_find['Persona']['id'];
										
										$poliza_find = $this->Poliza->findByNumeroPolizaAndPersonaId($familiar_seguro['FamiliarPersona']['numero_poliza'],
																										$familiar_seguro['FamiliarPersona']['persona_id']);
		
										if ($poliza_find)
										{
											$familiar_seguro['FamiliarPersona']['poliza_id'] =$poliza_find['Poliza']['id'];
											if ($this->FamiliarPersona->save($familiar_seguro))
											{
												
											}
											else 
											{
												array_push($malas,array(
																		'Columna' => $i+9,
																		'Mensaje' => 'No se pudo asignar como asegurado, verifique los datos suministrados'
													     		)
												  );
											}
											
										}
										else 
										{
											array_push($malas,array(
																	'Columna' => $i+9,
																	'Mensaje' => 'Mensaje la poliza insertada no se encuentra en la bd o la poliza insertada no le pertenece al empleado suministrado'
												     		)
											  );
										}
									}
									else 
									{
										array_push($malas,array(
																'Columna' => $i+9,
																'Mensaje' => 'Mensaje la empleado insertada no se encuentra en la bd'
											     		)
										  );
									}
									
									
								}
								else
								{
									array_push($malas,array(
																'Columna' => $i+9,
																'Mensaje' => 'Mensaje el familiar suministrado no se encuentra asignado al empleado suministrado'
											     		)
										  );
								}

								
							}
							else
							{
								array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'Mensaje el familiar suministrado no se encuentra en la base de datos'
										     		)
									  );
							}
							
						}
						catch(Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'Mensaje 6'
										     		)
									  );
						}
						
					}
				break;
				
			case 4:
					
					foreach ($arreglo as $estudio_univ) 
					{
						$i++;
						try
						{
							$persona_find = $this->Persona->findByCiPersona($estudio_univ['EstudioUniversidad']['ci_persona']);
							if ($persona_find)
							{
								$estudio_univ['EstudioUniversidad']['persona_id'] =$persona_find['Persona']['id'];
								$universidad_find = $this->Universidad->findByNombreUniversidad($estudio_univ['EstudioUniversidad']['universidad']);
								$carrera_find = $this->Estudio->findByNombreEstudio($estudio_univ['EstudioUniversidad']['carrera']);
								$estudio_univ_find = $this->EstudioUniversidad->query(
																							'SELECT *
																							 FROM  estudios_universidads EU, estudios E, universidads U, personas P
																							 WHERE EU.estudio_id = E.id
																							 AND EU.universidad_id = U.id
																							 AND EU.persona_id = P.id
																							 AND U.nombre_universidad = "'.$estudio_univ['EstudioUniversidad']['universidad'].'"
																							 AND E.nombre_estudio = "'.$estudio_univ['EstudioUniversidad']['carrera'].'"
																							 AND P.ci_persona = "'.$estudio_univ['EstudioUniversidad']['ci_persona'].'"'
																							 
																					 );
								if ($carrera_find)
								{
									$estudio_univ['EstudioUniversidad']['estudio_id'] =$carrera_find['Estudio']['id'];
									if ($universidad_find)
									{
										$estudio_univ['EstudioUniversidad']['universidad_id'] =$universidad_find['Universidad']['id'];
										
										if ($estudio_univ_find)
										{
											$estudio_univ['EstudioUniversidad']['id'] =$estudio_univ_find[0]['EU']['id'];
										}
	
										if ($this->EstudioUniversidad->save($estudio_univ))
										{
											
										}
										else 
										{
											array_push($malas,array(
																	'Columna' => $i+9,
																	'Mensaje' => 'No se pudo guardar el estudio, verifique los datos suministrados'
												     		)
											  );
										}
											
										
									}
									else
									{
										array_push($malas,array(
																	'Columna' => $i+9,
																	'Mensaje' => 'No se suministro la universidad'
												     		)
											  );
									}
									
								}
								else
								{
									array_push($malas,array(
																'Columna' => $i+9,
																'Mensaje' => 'No se suministro la carrera'
											     		)
										  );
								}
								

							}
							else 
							{
								array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'No se suministro la cedula persona o la cedula insertada es invalida'
										     		)
									  );
							}
						}
						catch (Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'error general '.$ee
										     		)
									  );
						}
					}
					
				break;
				
			case 5:
				
				break;
			
			case 6:
				
					foreach ($arreglo as $seguro) 
					{
						$i++;
						try
						{
							$seguro_find = $this->Seguro->findByRifSeguro($seguro['Seguro']['rif_seguro']);
							if ($seguro_find)
							{
								$seguro['Seguro']['id'] = $seguro_find['Seguro']['id'];
							}	
							
							if ($this->Seguro->save($seguro))
							{
								
							}
							else 
							{
								array_push($malas,array(
														'Columna' => $i+9,
														'Mensaje' => 'No se pudo guardar el seguro, verifique los datos suministrados'
									     		)
								  );
							}

							
							
						}
						catch (Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'error general '.$ee
										     		)
									  );
						}
					}
				
				break;
				
			case 7:
				
					foreach ($arreglo as $clinica) 
					{
						$i++;
						try
						{
							$clinica_find = $this->Hospital->findByRifHospital($clinica['Hospital']['rif_hospital']);
							if ($clinica_find)
							{
								$clinica['Hospital']['id'] = $clinica_find['Hospital']['id'];
							}	
							
							if ($this->Hospital->save($clinica))
							{
								
							}
							else 
							{
								array_push($malas,array(
														'Columna' => $i+9,
														'Mensaje' => 'No se pudo guardar la clinica, verifique los datos suministrados'
									     		)
								  );
							}

							
							
						}
						catch (Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'error general '.$ee
										     		)
									  );
						}
					}
				
				break;
				
			case 8:
				
					foreach ($arreglo as $ocio) 
					{
						$i++;
						try
						{
							$sede_find = $this->Sede->findByNombreSede($ocio['Ocio']['nombre_sede']);
							if ($sede_find)
							{
								$ocio['Ocio']['sede_id'] = $sede_find['Sede']['id'];
								$ocio_find = $this->Ocio->findByRifOcio($ocio['Ocio']['rif_ocio']);
								if ($ocio_find)
								{
									$ocio['Ocio']['id'] = $ocio_find['Ocio']['id'];
									$ocio['Ocio']['email_ocio'] = $ocio_find['Ocio']['email_ocio'];
									
									if($this->Ocio->save($ocio))
									{
										
									}
									else 
									{
										array_push($malas,array(
																'Columna' => $i+9,
																'Mensaje' => 'No se pudo guardar el establecimiento, verifique los datos suministrados'
											     		)
										  );
									}
									
								}
								else 
								{
									array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'El RIF del establecimiento suministrado es invalido'
										     		)
									  );
								}	
								
							}
							else 
							{
								array_push($malas,array(
														'Columna' => $i+9,
														'Mensaje' => 'La sede suministrada es invalida'
									     		)
								  );
							}
							

							
							
						}
						catch (Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'try'
										     		)
									  );
						}
					}
				
				break;
			case 9:
				
					foreach ($arreglo as $recibo) 
					{
						$i++;
						try
						{
							$tipo_recibo_fin = $this->TipoRecibo->findByNombreTipoRecibo($recibo['ReciboPago']['nombre_tipo_recibo']);
							if ($tipo_recibo_fin)
							{
								$recibo['ReciboPago']['tipo_recibo_id'] = $tipo_recibo_fin['TipoRecibo']['id'];
								$persona_find = $this->Persona->findByCiPersona($recibo['ReciboPago']['ci_persona']);
								if ($persona_find)
								{
									$recibo['ReciboPago']['persona_id'] = $persona_find['Persona']['id'];
									$recibo_find = $this->ReciboPago->findByNumeroRecibo($recibo['ReciboPago']['numero_recibo']);
									
									if (!$recibo_find)
									{
										if($this->ReciboPago->save($recibo))
										{
											
										}
										else 
										{
											array_push($malas,array(
																	'Columna' => $i+9,
																	'Mensaje' => 'No se pudo guardar el establecimiento, verifique los datos suministrados'
												     		)
											  );
										}
									}
									else 
									{
										array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'Ya se encuentra un recibo con el mismo numero'
										     		)
									  );	
									}
									
									
								}
								else 
								{
									array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'La Cédula de Identidad Suministrada no esta asociada a un empleado'
										     		)
									  );
								}	
								
							}
							else 
							{
								array_push($malas,array(
														'Columna' => $i+9,
														'Mensaje' => 'El Tipo Recibo Suministrado es Invalido'
									     		)
								  );
							}
							

							
							
						}
						catch (Exception $ee)
						{
							array_push($malas,array(
															'Columna' => $i+9,
															'Mensaje' => 'try: '.$ee
										     		)
									  );
						}
					}
				
				break;		
			
			default:
				
				break;
		}

		return $malas;
	}
	
	public function combobox_excel_opciones()
	{
		$arreglo_opciones = array();
		array_push($arreglo_opciones,'Actualización de Información de las Personas');
		array_push($arreglo_opciones,'Actualización de Información de Familiares de Personas');
		array_push($arreglo_opciones,'Asignación de Familiares a las Personas');
		array_push($arreglo_opciones,'Actualización de Información de Familiares Asegurados');
		array_push($arreglo_opciones,'Actualización de Información de los Estudios de Personas');
		array_push($arreglo_opciones,'Actualización de Información de los Adiestramientos de Personas');
		array_push($arreglo_opciones,'Actualización de Información del Seguro');
		array_push($arreglo_opciones,'Actualización de Información de las Clínicas');
		array_push($arreglo_opciones,'Actualización de Horarios de Establecimientos de Ocio');
		array_push($arreglo_opciones,'Actualización de Información de los Recibos');
		$this->set('arreglo_opciones',$arreglo_opciones);
	
	}
	
	public function armar_array_persona($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('Persona' => array(
															'id' => "",
															'direccion_id' => 1,
															'ci_persona' => $nodo['Nodo']['Tipo de Cédula'].$nodo['Nodo']['Nro. de Cédula'],
															'nombre_persona_1' => $nodo['Nodo']['Primer Nombre'] != "" ? $nodo['Nodo']['Primer Nombre'] : NULL,
															'nombre_persona_2' => $nodo['Nodo']['Segundo Nombre'] != "" ? $nodo['Nodo']['Segundo Nombre'] : NULL,
															'apellido_persona_1' => $nodo['Nodo']['Primer Apellido'] != "" ? $nodo['Nodo']['Primer Apellido'] : NULL,
															'apellido_persona_2' => $nodo['Nodo']['Segundo Apellido'] != "" ? $nodo['Nodo']['Segundo Apellido'] : NULL,
															'nro_tlf_persona_1' => $nodo['Nodo']['Teléfono Primario'] != "" ? $nodo['Nodo']['Teléfono Primario'] : NULL,
															'nro_tlf_persona_2' => $nodo['Nodo']['Teléfono Secundario'] != "" ? $nodo['Nodo']['Teléfono Secundario'] : NULL,
															'fecha_nacimiento' => $nodo['Nodo']['Fecha de Nacimiento'],
															'sexo_persona' => $nodo['Nodo']['Sexo'],
															'fecha_modificacion' => date('Y-m-d H:i:s')
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_persona_familiar($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('Familiare' => array(
			
															'id' => "",
															'ci_familiar' => $nodo['Nodo']['Tipo de Cédula'].$nodo['Nodo']['Nro. de Cédula'],
															'nombre_familiar_1' => $nodo['Nodo']['Primer Nombre'] != "" ? $nodo['Nodo']['Primer Nombre'] : NULL,
															'nombre_familiar_2' => $nodo['Nodo']['Primer Nombre'] != "" ? $nodo['Nodo']['Primer Nombre'] : NULL,
															'apellido_familiar_1' => $nodo['Nodo']['Primer Apellido'] != "" ? $nodo['Nodo']['Primer Apellido'] : NULL,
															'apellido_familiar_2' => $nodo['Nodo']['Segundo Apellido'] != "" ? $nodo['Nodo']['Segundo Apellido'] : NULL,													
															'fecha_nac_familiar' => $nodo['Nodo']['Fecha de Nacimiento'],
															'sexo_familiar' => $nodo['Nodo']['Sexo'],

															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_persona_familiar_seguro($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('FamiliarPersona' => array(
															'id' => "",
															'persona_id' => "",
															'poliza_id' => "",
															'familiares_id' => "",
															'parentesco_id' => "",
															'ci_empleado' => $nodo['Nodo']['Tipo de Cédula del Empleado'].$nodo['Nodo']['Cédula del Empleado'],
															'ci_familiar' => $nodo['Nodo']['Tipo de Cédula del Familiar'].$nodo['Nodo']['Cédula del Familiar'],
															'numero_poliza' => $nodo['Nodo']['Póliza de Seguro']
															
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_seguro($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
				
			array_push($arreglo_bd, array('Seguro' => array(
															'id' => "",
															'nombre_seguro' => $nodo['Nodo']['Nombre del Seguro'],
															'rif_seguro' => $nodo['Nodo']['Tipo de RIF'].'-'.$nodo['Nodo']['Número de RIF'],
															'nro_tlf_seguro_1' => $nodo['Nodo']['Teléfono Primario'] != "" ? $nodo['Nodo']['Teléfono Primario'] : NULL,
															'nro_tlf_seguro_2' => $nodo['Nodo']['Teléfono Secundario'] != "" ? $nodo['Nodo']['Teléfono Secundario'] : NULL,
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}

	public function armar_array_seguro1($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
				
			array_push($arreglo_bd, array('Adiestramiento' => array(
															'id' => "",
															'tipo_adiestramiento_id' => $nodo['Nodo']['Nombre del Seguro'],
															'nombre_diestramiento' => $nodo['Nodo']['Tipo de RIF'].'-'.$nodo['Nodo']['Número de RIF'],
															'ano_adiestramiento' => $nodo['Nodo']['Teléfono Primario'] != "" ? $nodo['Nodo']['Teléfono Primario'] : NULL,
															'nro_tlf_seguro_2' => $nodo['Nodo']['Teléfono Secundario'] != "" ? $nodo['Nodo']['Teléfono Secundario'] : NULL,
															/*'descripcion_seguro' =>  $nodo['Nodo']['Descripción del Seguro']*/
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_clinicas_seguro_assign($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
				
			array_push($arreglo_bd, array('Seguro' => array(
															'id' => "",
															
															'seguro_id' => $nodo['Nodo']['Nombre del Seguro'],
															'hospital_id' => $nodo['Nodo']['Nombre del Seguro'],
															
															'rif_seguro' => $nodo['Nodo']['Tipo de RIF del Seguro'].'-'.$nodo['Nodo']['Número de RIF'],
															'rif_clinica' => $nodo['Nodo']['Tipo de RIF de la Clínica'].'-'.$nodo['Nodo']['Nro. De RIF de la Clínica'],
															
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_clinicas($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('Hospital' => array(
															'id' => "",
															'direccion_id' => 1,
															'nombre_hospital' => $nodo['Nodo']['Nombre'],
															'rif_hospital' => $nodo['Nodo']['Tipo de RIF'].'-'.$nodo['Nodo']['Número de RIF'],
															'nro_tlf_hospital_1' => $nodo['Nodo']['Teléfono Primario'],
															'nro_tlf_hospital_2' => $nodo['Nodo']['Teléfono Secundario'],
															'nombre_persona_contacto_hospital' =>  $nodo['Nodo']['Nombre de Persona de Contacto']
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_ocios($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			
			array_push($arreglo_bd, array('Ocio' => array(
															'id' => '',
															'rif_ocio' => $nodo['Nodo']['Tipo de RIF'].'-'.$nodo['Nodo']['Número de RIF'],
															'nombre_establecimiento_ocio' => $nodo['Nodo']['Nombre del Establecimiento'],
															'nombre_sede' => $nodo['Nodo']['Sede'],
															'horario_inic' => $nodo['Nodo']['Hora de Inicio'],
															'horario_fin' => $nodo['Nodo']['Hora de Finalización'],
															'fecha_inic' => date('Y-m-d'),
															'fecha_fin' => null,
															'descripcion_ocio' => $nodo['Nodo']['Descripción del Establecimiento'],
															'status_ocio' => false,
															'email_ocio' => ''
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_recibos($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			
			array_push($arreglo_bd, array('ReciboPago' => array(
															'id' => '',
															'persona_id' => "",
															'numero_recibo' => $nodo['Nodo']['Numero de Recibo'],
															'status_recibo_pago_id' => "",
															'monto_recibo_pago' => $nodo['Nodo']['Monto (BsF.)'],
															'fecha_emitido_pago' => $nodo['Nodo']['Fecha de Emitido'],
															'nombre_tipo_recibo' =>$nodo['Nodo']['Tipo Recibo'],
															'ci_persona' => $nodo['Nodo']['Tipo de Cédula'].$nodo['Nodo']['Nro. de Cédula']
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	public function armar_array_persona_estudio($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('EstudioUniversidad' => array(
															'id' => '',
															'persona_id' => '',
															'estudio_id' => '',
															'universidad_id' => '',
															'direccion_id' => 1,
															'ci_persona' => $nodo['Nodo']['Tipo de Cédula'].$nodo['Nodo']['Cédula del Empleado'],
															'carrera' => $nodo['Nodo']['Carrera'],
															'universidad' => $nodo['Nodo']['Universidad'],
															'fecha_inic_estudios' => $nodo['Nodo']['Fecha de Inicio'],
															'fecha_fin_estudios' => $nodo['Nodo']['Fecha de Finalización']
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_persona_adiestramientos($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('Personas' => array(
															'direccion_id' => 1,
															'ci_persona' => $nodo['Nodo']['Tipo de Cedula'].$nodo['Nodo']['Cedula'],
															'nombre_persona_1' => $nodo['Nodo']['Primer Nombre'],
															'nombre_persona_2' => $nodo['Nodo']['Segundo Nombre'],
															'apellido_persona_1' => $nodo['Nodo']['Primer Apellido'],
															'apellido_persona_2' => $nodo['Nodo']['Segundo Apellido'],
															'nro_tlf_persona_1' => $nodo['Nodo']['Telefono Primario'],
															'nro_tlf_persona_2' => $nodo['Nodo']['Telefono Secundario'],
															'fecha_nacimiento' => $nodo['Nodo']['Fecha de Nacimiento'],
															'sexo_persona' => $nodo['Nodo']['Sexo']
											
											
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	public function armar_array_persona_assign_familiar($arreglo_excel)
	{
		$arreglo_bd = array();
		
		foreach ($arreglo_excel as $nodo) 
		{
			array_push($arreglo_bd, array('FamiliarPersona' => array(
															'id' => "",
															'persona_id' => "",
															'familiares_id' => "",
															'parentesco_id' => "",
															'ci_empleado' => $nodo['Nodo']['Tipo de Cédula del Empleado'].$nodo['Nodo']['Cédula del Empleado'],
															'ci_familiar' => $nodo['Nodo']['Tipo de Cédula del Familiar'].$nodo['Nodo']['Cédula del Familiar'],
															'nombre_parentesco' => $nodo['Nodo']['Parentesco']
															
															 )
										  )
					  );
		}
		
		return $arreglo_bd;
	}
	
	
	
	public function upload_file($direccion_archivo) 
	{
		 $file = $this->request->data['ConfiguracionModulo']['direcciones_pasos_beneficio'];
         //$this->pdfadd1->save($this->request->data);
         
         if(move_uploaded_file($this->data['ConfiguracionModulo']['direcciones_pasos_beneficio']['tmp_name'], 
			$direccion_archivo))
		 {
			return true;
			
	   	 }
		 else 
		 {
			return false;
		 }
	}
	
	public function leer_excel_para_tablas ($identificador,$direccion_archivo)
	{
		$cantidad_registros = 0;
		switch ($identificador) 
		{
			
			case 0: // guardar informacion personal persona
				
				$personas_xls = $this->read_excel(9,2,11,10,13,$direccion_archivo);
				$cantidad_registros = count($personas_xls);
				$arreglo_personas = $this->armar_array_persona($personas_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_personas);
				
				
				break;
			
			case 1: // guardar informacion de familiares
			
				$familiar_xls = $this->read_excel(9,2,9,10,11,$direccion_archivo);
				$cantidad_registros = count($familiar_xls);
				$arrego_familiar = $this->armar_array_persona_familiar($familiar_xls);	
				$malas = $this->guardar_archivos($identificador, $arrego_familiar);
		
				break;
			
			case 2: // guardar informacion de asignacion de  familiares a personas
				
				$familiar_assign_xls = $this->read_excel(9,2,6,10,8,$direccion_archivo);
				$cantidad_registros = count($familiar_assign_xls);
				$arreglo_familiar_assign = $this->armar_array_persona_assign_familiar($familiar_assign_xls);	
				$malas = $this->guardar_archivos($identificador, $arreglo_familiar_assign);		
		
				break;
			
			case 3: // guardar informacion de familiares asegurados
				
				$familiar_seguro_xls = $this->read_excel(9,2,6,10,8,$direccion_archivo);
				$cantidad_registros = count($familiar_seguro_xls);
				$arreglo_familiar_seguro = $this->armar_array_persona_familiar_seguro($familiar_seguro_xls);	
				$malas = $this->guardar_archivos($identificador, $arreglo_familiar_seguro);		
		
				break;
			
			case 4: // guardar informacion de estudios de persona
				
				$estudios_xls = $this->read_excel(9,2,7,10,9,$direccion_archivo);
				$cantidad_registros = count($estudios_xls);
				$arreglo_estudio = $this->armar_array_persona_estudio($estudios_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_estudio);		
				
				break;
			
			case 5: // guardar informacion de adiestramientos de persona
				
				$adiestramiento_xls = $this->read_excel(6,2,10,$direccion_archivo);		
				$cantidad_registros = count($adiestramiento_xls);
				$arreglo_adiestramiento = $this->armar_array_adiestramiento($adiestramiento_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_adiestramiento);		
				
				break;
			
			case 6:// guardar informacion de seguro
				
				$seguros_xls = $this->read_excel(9,2,7,10,9,$direccion_archivo);
				$cantidad_registros = count($seguros_xls);
				$arreglo_seguros = $this->armar_array_seguro($seguros_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_seguros);		
				
				
				break;
			
			case 7: // guardar informacion de clinicas
				
				$clinicas_xls = $this->read_excel(9,2,7,10,9,$direccion_archivo);
				$cantidad_registros = count($clinicas_xls);
				$arreglo_clinicas = $this->armar_array_clinicas($clinicas_xls);	
				$malas = $this->guardar_archivos($identificador, $arreglo_clinicas);			
					
		
				break;
			
			case 8: // guardar informacion de horarios de ocio
				
				$ocio_xls = $this->read_excel(9,2,8,10,10,$direccion_archivo);
				$cantidad_registros = count($ocio_xls);
				$arreglo_ocio = $this->armar_array_ocios($ocio_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_ocio);		
					
		
				break;
			
			case 9: // guardar_informacion_recibo
				
				$recibo_xls = $this->read_excel(9,2,7,10,9,$direccion_archivo);
				$cantidad_registros = count($recibo_xls);
				$arreglo_recibo = $this->armar_array_recibos($recibo_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_recibo);		
					
		
				break;
			
			case 20: // asignacion de las clinicas al seguro
				
				$clinica_seguro_assign_xls = $this->read_excel(9,2,5,7,9,$direccion_archivo);
				$cantidad_registros = count($clinica_seguro_assign_xls);
				$arreglo_clinica_seguro_assign = $this->armar_array_clinicas_seguro_assign($clinica_seguro_assign_xls);
				$malas = $this->guardar_archivos($identificador, $arreglo_clinica_seguro_assign);		
					
		
				break;
			
			
			
			default:
				
				break;
		}
		//debug($malas);
		$this->set('cant_mala',count($malas));
		$this->set('cant_buena',$cantidad_registros- count($malas));
		$this->set('malas',$malas);
	}
	
	public function read_excel($min_row,$min_col,$max_col,$row_max_col,$col_max_row,$direccion_archivo)
	{
		//$direccion_archivo = 'C:\xampp\htdocs\BackEndRecursosHumanos\app\webroot\/files/configuracion_modulo/Personas Excel.xlsx';
		$data1 = new Spreadsheet_Excel_Reader();
		// Set output Encoding.
		$data1->setOutputEncoding('UTF-8');
		
		$data1->read($direccion_archivo);
		//$this->request->data['BeneficiosAdministrativo']['direcciones_pasos_beneficio_dir']
		$headings = array();
		$xls_data = array();
		
		//ini_set('max_execution_time', 300);
		$ModelName ="Nodo";
		
		$data1->sheets[0]['numCols'] = $max_col;
		$data1->sheets[0]['numRows'] = $data1->sheets[0]['cells'][$row_max_col][$col_max_row]+9;
		
		for ($i = $min_row; $i <= $data1->sheets[0]['numRows']; $i++) // filas
		{
		    $row_data = array();
			
		    for ($j = $min_col; $j <= $data1->sheets[0]['numCols']; $j++) //columnas
		    {
		        
		        if($i == $min_row) 
		        {
		            //this is the headings row, each column (j) is a header
		            $headings[$j] = utf8_encode($data1->sheets[0]['cells'][$i][$j]);
					
		        } 
		        else 
		        {
		            //column of data
		            $row_data[$headings[$j]] = isset($data1->sheets[0]['cells'][$i][$j]) ? utf8_encode($data1->sheets[0]['cells'][$i][$j]) : '';
					
					
		        }
		    }
		 	
		    if($i > $min_row) 
		    {
		        $xls_data[] = array($ModelName => $row_data);
		    }
		}
		
		
		
		return $xls_data;
		
	}
}
?>